#!/bin/bash

# 定义路径
SUBJECTS_DIR="/media/amd/data/long/mdd_3d_constr"
MRI_DIR="/media/amd/data/long/hcmdd_2d_to_3d/PAT_2d_GE"
CSV_FILE="pat_to_recon_all.csv"
MAX_JOBS=55  # 最大并行任务数
LOG_FILE="recon_all_joblog_2.txt"

# 创建输出目录（如果不存在）
mkdir -p "$SUBJECTS_DIR"

# 定义处理函数（每个被试单独处理）
process_subject() {
    local subj="$1"
    local input_file="$MRI_DIR/$subj/sr.nii.gz"
    local folder_path="$SUBJECTS_DIR/$subj/label"
    
    if [ -d "$folder_path" ] && [ "$(ls -A "$folder_path")" ]; then
        echo "文件夹存在且不为空"
        file_count=$(ls -1 "$folder_path" | wc -l)
        echo "文件数量: $file_count"
        return 0
    fi
    
    echo "开始处理: $subj"
    
    if [[ -f "$input_file" ]]; then
        recon-all -i "$input_file" -s "$subj" -all 
    else
        echo "错误: 输入文件不存在 - $input_file" >&2
        return 1
    fi
}

# 导出函数和变量（供子进程调用）
export -f process_subject
export SUBJECTS_DIR MRI_DIR

cat "$CSV_FILE" | parallel -j $MAX_JOBS \
    --progress \
    --joblog "$LOG_FILE" \
    --eta \
    "process_subject {} || echo '任务失败: {}' >&2"
    
# 统计结果
echo "===== 任务完成统计 ====="
success_count=$(grep -c "Exitval:0" "$LOG_FILE")
fail_count=$(grep -c "Exitval:[^0]" "$LOG_FILE")
echo "成功: $success_count, 失败: $fail_count"
